ORDER BYはSQLの一部ではない
FROM句から書く
SELECT句のASで付けた別名をORDER BYで参照できない
まだ別名がつけられていないから
これは基本的にできない(できるRDBもある)
code:sql
select pid as id, pname as name from sample
order by id asc;
SQLの実行順序は、FROM→WHERE→GROUP BY→HAVING→SELECT(→ORDER BY)です。ORDER BYは正確にはSQLの一部ではないので、これは本当に蚊帳の外に置いてかまいません。そうすると、SELECT旬が正真正銘のラストになります。*12
*12 SELECT句で付けた列の別名をGROUP BY句で参照できないのは、この理由によります。参照しようにもまだその別名は作られていないからです。
FROM句を実行、1つの結果テーブルを作る
複数テーブルの場合、同じ名前の列名が存在する可能性がある
混乱を避けるためテーブル名.列名と指定するとよい
WHERE句があればFROM句が作った結果テーブルに適用、条件の結果がTRUEの行だけ残る
FALSE、UNKNOWNは除外
GROUP BY句があれば実行、FROM句とWHERE句が作った結果テーブルに対してグルーピングを行っていく
参考